<?php
/**
 * 品牌控制器
 */
class ListController extends CommonController{
	//保存实例化模型对象
	private $_model;
	//构造函数
	public function __init(){
		//实例化tagmodel.class.php
		$this->_model=K('List');
	}
	//迪卡尔乘积，私有方法，组合商品规格
	public function _descarte($arr, $tmp = array()){
		foreach(array_shift($arr) AS $k=>$v){
			$tmp[$k]	= $v;
			if($arr){
				$this->_descarte($arr, $tmp);
			}
			else{
				$this->res[]	= $tmp;
			}
			array_pop($tmp);
		}
	}
	//货品首页列表
	public function index(){

		//1商品类型属性,类型为1的，可以多选的
		$type=K('TypeAttr')->get_all_data(array('tattr_type'=>1));
		foreach ($type as $k => $v) {
			//商品类型属性id,所有
			$type_id[]=$v['id']; 
			//商品属性表，商品所有规格
			$arr[]=K('ProductAttr')->get_all_data(array('pro_id'=>Q('get.pr_id'),'type_attrid'=>$v['id']));
		}
		foreach ($arr as $k => $v) {
			//重组数组，按规格类型分组，需要组合的两个子数组的形式
			//用来传入笛卡儿积计算方法
			foreach ($v as $key => $value) {
				$id=$value['id'];
				$arr2[$k][$id]=$value['pvalue'];
			}
		}
//		p($arr);
//		p($arr2);
		//转为字符串,数据库存储
		$list_id=implode(',', $type_id);
//		$this->assign('list_id',$list_id);
		//调用私有方法，求笛卡儿积
		$this->_descarte($arr2);
		
		$data=$this->res;
		foreach($data as $k=>$v){		
			$arr3=array_keys($v);
			$data['list_id'][]=implode(',', $arr3);
		}
		$this->assign('list_id',$data['list_id']);
//		p($data);
		unset($data['list_id']);
//		p($data);
		$this->assign('data',$this->res);
		$this->display();
	}

	/**
     * 上传文件
     */
    public function upload(){
        $upload = new Upload('Upload/logo/' . date('ymd') .'/');
        $file = $upload->upload();
        if (empty($file)) {
            $this->ajax('上传失败');
        } else {
        	$img= new Image();
            $data = $file[0]; 
            $info=$img->thumb($data['path'],'',90,30);
            $data['logo']=$info;
            $this->ajax($data);
        }
    }


	//添加货品
	public function add(){
//		p($_POST);die;
	
		if (IS_POST) {
	
			//执行模型添加，在添加的动作之前，有自动验证add_data()
			if(!$this->_model->add_data()) $this->error($this->_model->error);

			$this->success('添加成功');
		}
	}

	//修改
	public function edit(){
		//获得修改
		$rid=Q('get.rid',0,'interval');
		//更新数据
		if (IS_POST) {
			$this->_model->edit_data(array('rid'=>$rid));
			$this->success('修改成功！',U('index'));
		}
		
		//获得旧数据，取一条//获得当前元素
		$oldData=current($this->_model->get_all_data(array('rid'=>$rid)));
		// p($oldData);die;
		//分配旧数据
		$this->assign('oldData',$oldData);
		
		//查询出所有分类选项
		$data=K('Category')->get_all_data();
		$this->assign('data',$data);


		$this->display();
	}




}
